//
//  RLMBrowserConfiguration.m
//
//  Copyright 2016-2017 Timothy Oliver. All rights reserved.
//
//  Permission is hereby granted, free of charge, to any person obtaining a copy
//  of this software and associated documentation files (the "Software"), to
//  deal in the Software without restriction, including without limitation the
//  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
//  sell copies of the Software, and to permit persons to whom the Software is
//  furnished to do so, subject to the following conditions:
//
//  The above copyright notice and this permission notice shall be included in
//  all copies or substantial portions of the Software.
//
//  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
//  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
//  WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
//  IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

#import "RLMBrowserConfiguration.h"
#import "RLMBrowserConstants.h"

#import "RLMBrowserList.h"
#import "RLMBrowserRealm.h"
#import "RLMBrowserSchema.h"
#import "RLMBrowserObjectProperty.h"
#import "RLMBrowserAppGroupRealm.h"

@implementation RLMBrowserConfiguration

+ (RLMRealmConfiguration *)configuration
{
    // Get Application Support directory
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES);
    NSString *applicationSupportDirectory = [paths firstObject];
    
    // Create a uniquely named folder to store the Browser Realm
    NSString *browserRealmDirectory = [applicationSupportDirectory stringByAppendingPathComponent:kRLMBrowserIdentifier];
    [[NSFileManager defaultManager] createDirectoryAtPath:browserRealmDirectory withIntermediateDirectories:YES attributes:nil error:nil];
    
    // Build the final file path to the Realm file
    NSString *browserRealmPath = [browserRealmDirectory stringByAppendingPathComponent:@"browser.realm"];
    
    // Generate the Realm Configuration
    RLMRealmConfiguration *configuration = [[RLMRealmConfiguration alloc] init];
    configuration.fileURL = [NSURL fileURLWithPath:browserRealmPath];
    configuration.objectClasses = @[[RLMBrowserObjectProperty class],
                                    [RLMBrowserSchema class],
                                    [RLMBrowserRealm class],
                                    [RLMBrowserList class],
                                    [RLMBrowserAppGroupRealm class]];
    
    configuration.deleteRealmIfMigrationNeeded = YES;
    return configuration;
}

@end
